Class File এর বিভিন্ন Section: Magic Number, Version, Constant Pool, Fields, Methods গাইড ও নোট

Java Technologies - জাভা ভার্চুয়াল মেশিন (Java Virtual Machine) - JVM এর Class File Structure
324

Java প্রোগ্রাম লেখার পর, সেই প্রোগ্রামটি Java Compiler দ্বারা bytecode (যা .class ফাইলে থাকে) তে রূপান্তরিত হয়। .class ফাইলটি হল Java Virtual Machine (JVM) এর জন্য প্রস্তুত করা ফাইল, যাতে Java প্রোগ্রামটি JVM দ্বারা এক্সিকিউট করা যেতে পারে। এই .class ফাইলের গঠন বেশ কিছু নির্দিষ্ট সেকশন বা অংশ নিয়ে গঠিত, যা JVM এর জন্য প্রয়োজনীয় মেটাডেটা ধারণ করে।

Java Class File Structure Overview

Java class fileটি একটি বাইনারি ফাইল এবং এর গঠন সাধারণত কয়েকটি নির্দিষ্ট সেকশন নিয়ে গঠিত। এই সেকশনগুলো Java ক্লাসের মেটাডেটা, ফিল্ড, মেথড, কনস্ট্যান্ট পুল ইত্যাদি ধারণ করে। একটি সাধারণ Java class file সাধারণত এই সেকশনগুলোতে বিভক্ত:

  1. Magic Number
  2. Version Information
  3. Constant Pool
  4. Fields
  5. Methods
  6. Attributes

Java Class File এর বিভিন্ন Section

1. Magic Number

  • Magic Number হল একটি নির্দিষ্ট বাইনারি প্যাটার্ন যা .class ফাইলের প্রথমে থাকে এবং এটি JVM এর জন্য ক্লাস ফাইলটি সঠিকভাবে সনাক্ত করতে সাহায্য করে। এটি নিশ্চিত করে যে ফাইলটি একটি বৈধ Java class file।
  • Magic Number এর মান হল 0xCAFEBABE (বাইনারি রূপে 1100 1010 1111 1110 1011 1010 1011 1110)। এটি JVM এর জন্য ক্লাস ফাইল সঠিকভাবে পার্স করা নিশ্চিত করে।

Example:

0xCAFEBABE

2. Version Information

  • Version Information সেকশনে Java class file এর ভার্সন সম্পর্কিত তথ্য থাকে, যেমন Java Compiler কোন ভার্সনে কোড কম্পাইল করেছে। এটি দুটি অংশে ভাগ হয়ে থাকে:
    • Minor version: এটি Java এর প্রাথমিক ভার্সন নম্বর।
    • Major version: এটি Java এর প্রধান ভার্সন নম্বর।

Example:

  • Java 8 এর জন্য Major Version = 52, Minor Version = 0
  • Java 11 এর জন্য Major Version = 55, Minor Version = 0
Major Version: 52 (Java 8)
Minor Version: 0

3. Constant Pool

  • Constant Pool হল একটি ডাটা স্ট্রাকচার যা .class ফাইলে ব্যবহৃত সব ধরণের কনস্ট্যান্ট তথ্য (যেমন: লিটারেল ভ্যালু, ক্লাস, মেথড নাম ইত্যাদি) ধারণ করে। এটি মূলত সব রেফারেন্সের একটি টেবিল হিসেবে কাজ করে, যা Java bytecode এর মধ্যে ব্যবহৃত হয়।
  • Constant Pool এর মধ্যে:
    • Constant values: যেমন String, Integer, Float, Double, Long ইত্যাদি।
    • Class references: ক্লাস, ফিল্ড, মেথডের নাম।
    • Method references: মেথডের রেফারেন্স ইত্যাদি।

Example:

  • ধরুন, একটি String constant "Hello" ক্লাস ফাইলের Constant Pool এ সংরক্ষিত থাকে।
Constant Pool:
1. String: "Hello"
2. Class: java/lang/String

4. Fields

  • Fields সেকশনটি ক্লাসের instance variables এবং static variables সম্পর্কিত তথ্য ধারণ করে। এটি ফিল্ডের নাম, টাইপ, এবং অন্যান্য অ্যাট্রিবিউট যেমন access modifiers (private, public), static, final ইত্যাদি অন্তর্ভুক্ত করে।

Example:

  • একটি ক্লাসে যদি একটি private ইনস্ট্যান্স ভেরিয়েবল int x থাকে, তবে এটি Fields সেকশনে name এবং type সহ তালিকাভুক্ত হবে।
Fields:
1. Field: int x
2. Access Modifier: private

5. Methods

  • Methods সেকশনটি ক্লাসের সমস্ত method definitions ধারণ করে, যা মেথডের নাম, প্যারামিটার, রিটার্ন টাইপ এবং মেথডের access modifiers (public, private) ইত্যাদি অন্তর্ভুক্ত করে।
  • মেথডে কোন bytecode রয়েছে, সেটি Attributes সেকশনে থাকবে, যেখানে মেথডের লজিক বা কমান্ড থাকবে।

Example:

  • একটি ক্লাসে যদি একটি public void print() মেথড থাকে, তবে এটি Methods সেকশনে সংরক্ষিত হবে এবং এর সিগনেচার থাকবে।
Methods:
1. Method: public void print()

6. Attributes

  • Attributes সেকশনটি অতিরিক্ত মেটাডেটা ধারণ করে, যা ক্লাসের বা মেথডের উপর নির্ভর করে। এটি সাধারণত Code, Line Number Table, Source File, Exceptions ইত্যাদি অন্তর্ভুক্ত করে।
    • Code attribute: এটি bytecode ধারণ করে এবং ক্লাস বা মেথডের জন্য রানটাইম কোডটি নির্দেশ করে।
    • Line Number Table: এটি debugging এর জন্য ব্যবহার হয় এবং bytecode ইন্সট্রাকশনের জন্য সোর্স কোডের লাইন নম্বর নির্ধারণ করে।
    • Source File: এটি ক্লাসের সোর্স ফাইলের নাম ধারণ করে।

Example:

  • Code অ্যাট্রিবিউটে একটি মেথডের বাইটকোড থাকতে পারে এবং LineNumberTable অ্যাট্রিবিউটে সোর্স কোডের লাইন নম্বর সম্পর্কিত তথ্য থাকতে পারে।
Attributes:
1. Code: bytecode for methods
2. LineNumberTable: maps bytecode to source code lines
3. SourceFile: ClassName.java

Class File Structure Diagram:

+------------------------------------------+
| Magic Number (0xCAFEBABE)                |
+------------------------------------------+
| Version Information (Minor, Major)       |
+------------------------------------------+
| Constant Pool                           |
+------------------------------------------+
| Fields (Instance Variables)             |
+------------------------------------------+
| Methods (Method Signatures)             |
+------------------------------------------+
| Attributes (Code, Line Number Table)    |
+------------------------------------------+

Java class file গঠন একটি খুবই সুনির্দিষ্ট এবং কাঠামোবদ্ধ ফর্ম্যাট, যা JVM এর জন্য একটি বিশেষ সিগনেচার হিসেবে কাজ করে। এতে Magic Number, Version Information, Constant Pool, Fields, Methods, এবং Attributes অন্তর্ভুক্ত থাকে, যা JVM কে কোড এক্সিকিউট করার জন্য প্রয়োজনীয় সমস্ত তথ্য প্রদান করে। Class File এর এই গঠন Java প্রোগ্রামকে প্ল্যাটফর্ম-নিরপেক্ষভাবে চালানোর জন্য অত্যন্ত গুরুত্বপূর্ণ এবং এটি Java Virtual Machine এর পারফরম্যান্স এবং কার্যকারিতাকে নিশ্চিত করে।

Content added By
Promotion

Are you sure to start over?

Loading...